Method and Apparatus of Constrained Intra Block Copy for Coding Video

ABSTRACT

A method and apparatus for IntraBC (Intra-block copy) coding for a coding region are disclosed. The method operates to receive input data associated with a current block in the coding region and determine a maximum memory size of a reconstructed sample memory for storing a constrained previous reconstructed region, wherein the constrained previous reconstructed region comprises a group of previous reconstructed samples processed before the current block. The method then derives an IntraBC predictor from a valid previous reconstructed region within the constrained previous reconstructed region stored in the reconstructed sample memory, and applies IntraBC encoding or decoding to the current block using the IntraBC predictor derived.

CROSS REFERENCE TO RELATED APPLICATIONS

The present invention is a Divisional of pending U.S. patent applicationSer. No. 14/883,883, filed on Oct. 15, 2015, which claims priority toU.S. Provisional Patent Application, Ser. No. 62/115,287, filed on Feb.12, 2015. The U.S. patent applications are hereby incorporated byreference in their entireties.

FIELD OF THE INVENTION

The present invention relates to video coding using Intra Block Copy(IntraBC) mode. In particular, the present invention relates totechniques to reduce the storage required for the Intra-block copy(IntraBC) coding mode in screen content coding or video coding.

BACKGROUND AND RELATED ART

High Efficiency Video Coding (HEVC) is a new coding standard that hasbeen developed in recent years. In the High Efficiency Video Coding(HEVC) system, the fixed-size macroblock of H.264/AVC is replaced by aflexible block, named coding unit (CU). Pixels in the CU share the samecoding parameters to improve coding efficiency. A CU may begin with alargest CU (LCU), which is also referred as coded tree unit (CTU) inHEVC. In addition to the concept of coding unit, the concept ofprediction unit (PU) is also introduced in HEVC. Once the splitting ofCU hierarchical tree is done, each leaf CU is further split into one ormore prediction units (PUs) according to prediction type and PUpartition.

In the current development of screen content coding (SCC) for the HighEfficiency Video Coding (HEVC) standard, a new Intra coding mode, namedIntra Block Copy (IntraBC) has been disclosed. The IntraBC techniquethat was originally proposed by Budagavi in AHG8: Video coding usingIntra motion compensation, Joint Collaborative Team on Video Coding(JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13thMeeting: Incheon, KR, 18-26 Apr. 2013, Document: JCTVC-M0350(hereinafter JCTVC-M0350). An example according to JCTVC-M0350 is shownin FIG. 1, where a current coding unit (CU, 110) is coded using Intra MC(motion compensation). The prediction block (120) is located from thecurrent CU and a displacement vector (112). In this example, the searcharea is limited to the current CTU (coding tree unit), the left CTU andthe left-left CTU. The prediction block is obtained from the alreadyreconstructed region. Then, the displacement vector, also named blockvector (BV), and residual for the current CU are coded. The HEVC adoptsCTU and CU block structure as basic units for coding video data. Eachpicture is divided into CTUs and each CTU is reclusively divided intoCUs. During prediction phase, each CU may be divided into multipleblocks, named prediction units (PUs) for performing prediction process.After prediction residue is formed for each CU, the residue associatedwith each CU is divided into multiple blocks, named transform units(TUs) to apply transform (such as discrete cosine transform (DCT)).

Since the initial IBC technique was introduced in JCTVC-M0350,variations of IBC and various improvements have been disclosed. Inparticular, while only the horizontal block vector is allowed inJCTVC-M0350, the current IBC uses two-dimensional block vectors. FIG. 2illustrates an example of previous reconstructed region that can be usedas reference data for encoding a current block according to IBC. In FIG.2, the blocks in a current frame (210) are processed in a pre-definedorder (e.g. horizontal scan). When the current block (220) is coded, theprevious reconstructed blocks in the previous reconstructed region (230)can be used as an IntraBC predictor for the current block.

The IntraBC predictor (350) for the current block (320) is locatedaccording to the block vector (340) as shown in FIG. 3. The IntraBCpredictor is treated as a reference block for the current block coded byIntraBC mode as if a reference block for an Inter-coded block. However,the reference block is located in the same picture as the current blockwhile the reference block is in a previous reconstructed referencepicture for Inter coding. The reference block is selected from theprevious reconstructed region (330) of the current frame (310). Theblock vector points from the current block (320) to the reference block(350). In other words, the location of the reference block (350) isdetermined based on the location of the current block (320) offset bythe block vector (340).

At the encoder side, the block vector is often determined by selecting areference block in the previous reconstructed region that achieves anoptimal performance. The performance can be in terms of BD-rate, whichis widely used in video coding systems as a performance measure. Afterthe block vector is determined, information related to the block vectoris signaled in the bitstream so that information related to the blockvector can be recovered at the decoder side for decoding the currentblock. According to the current HEVC standard, the previousreconstructed samples in the previous reconstructed region correspond toreconstructed pixels before the deblocking process.

A variation of IBC adopted by the HEVC standard restricts the previousreconstructed region to a ladder-shaped region (430) for coding acurrent block (420) in the current frame (410) as shown in FIG. 4, whereeach row of reconstructed blocks has the same or less number ofreconstructed blocks than the previous row of reconstructed blocks. Oneof the reasons for the restriction of the previous reconstructed regionas shown in FIG. 4 is for wave-front parallel process (WPP), whichallows multiple rows of blocks processed in parallel. In screen contentcoding (SCC), the processing of the current block may rely on data fromthe block above the current block and the processing of the currentblock has to wait till a whole or partial above-block is processed.Therefore, the processing of a current block in a current row has to bedelayed with respect to a corresponding block in the above row. Usually,delay corresponding to one or more blocks is used. While the WPP codingis intended for parallel encoding or decoding of multiple rows ofblocks, the WPP structure is also used for non-parallel processing.Accordingly, the WPP structure and the ladder-shaped previousreconstructed region have also been used for IBC coding. As shown inFIG. 4, the consecutive previous reconstructed blocks within theladder-shaped region in each row are not a complete row of blocks. Forconvenience, consecutive blocks in a row are referred as a row ofblocks, which may be a partial row or a full row.

For the IBC processing, the previous reconstructed region has to bestored for coding the current block. The amount of stored reconstructedregion will grow along the progress of the current block. FIG. 5illustrates three instances of IntraBC coding of the current block. Fortime instances t₁, t₂ and t₃ (t₁<t₂<t₃), the previous reconstructedregions (514, 524 and 534) for the current blocks (512, 522 and 532) areindicated respectively. As shown in FIG. 5, the previous reconstructedregion complies with the WPP structure (i.e., having a ladder-shapedregion) continues to grow along the progress of coding process. For thelast current block in the picture, the previous reconstructed regioncorresponds to whole picture less than the current block.

In hardware based coding processor, the data corresponding to theprevious reconstructed region may be stored in a buffer or embeddedmemory so that the processor can access the data stored in the buffer.However, such buffer or embedded memory for the previous reconstructedregion would increase the cost. On the other hand, the data for theprevious reconstructed region could be stored in an external memory.Nevertheless, there might be significant penalty on processing speed dueto external memory access. Accordingly, it is desirable to develop amethod and apparatus to overcome the memory issue associated withstoring the previous reconstructed region.

BRIEF SUMMARY OF THE INVENTION

A method of SCC (screen content coding) or video coding using an IntraBCmode (Intra-block copy mode) for a coding region is disclosed.Embodiments of the present invention derive an IntraBC (Intra pictureblock copy) predictor from a constrained previous reconstructed regionso as to reduce storage requirement for the previous reconstructed data.In one embodiment, a maximum absolute vertical BV (block vector) value,MaxV_BV is determined, where MaxV_BV is smaller than a full verticalsearch range for the coding region. An memory is designated to store aconstrained previous reconstructed region comprising previousreconstructed samples processed before the current block is thendetermined, where the constrained previous reconstructed region includesat least MaxV_MV sample rows in vertical direction above the currentblock and previously reconstructed blocks in a same block row as thecurrent block, and the constrained previous reconstructed regionexcludes at least one reconstructed sample row for the current blockwith a vertical distance measured with respect to a top edge of thecoding region larger than MaxV_MV. An IntraBC predictor is then derivedfrom the constrained previous reconstructed region stored in theinternal memory. The derived IntraBC predictor is then used for encodingor decoding of the current block. Each coding block may correspond to aprediction unit (PU) or a coding unit (CU).

In one embodiment, the IntraBC predictor is derived from a validprevious reconstructed region within the constrained previousreconstructed region stored in the memory, and the valid previousreconstructed region corresponds to the constrained previousreconstructed region overlapped with a ladder-shaped region related towave-front parallel processing (WPP). In another embodiment, theconstrained previous reconstructed region comprises N rows of previousreconstructed coding blocks above the current block, where N correspondsto a smallest integer larger than or equal to (MaxV_BV divided by theblock height).

One aspect of the present invention addresses the determination ofmaximum absolute vertical BV value. In one embodiment, the maximumabsolute vertical BV value can be determined based on Level or Profileassociated with video data being coded, encoder configuration, or anycombination thereof. For example, a first maximum absolute vertical BVvalue for a first Level can be equal to or larger than a second maximumabsolute vertical BV value for a second Level, where the first Level ishigher than the second Level. In another example, a first maximumabsolute vertical BV value for a first Profile can be equal to or largerthan a second maximum absolute vertical BV value for a second Profile,where the first Profile is higher than the second Profile. In yetanother example, the encoder configuration may include at least twomodes selected from a mode group comprising low-power mode, high-speedmode and high-quality mode. When the encoder configuration includes amode group comprising low-power mode, high-speed mode and high-qualitymode, a first maximum absolute vertical BV value for the high-qualitymode can be larger than or equal to a second maximum absolute verticalBV value for the high-speed mode. Furthermore, the second maximumabsolute vertical BV value for the high-speed mode can be larger than orequal to a third maximum absolute vertical BV value for the low-powermode.

In addition, a maximum absolute horizontal BV value, MaxH_BV can bedetermined, where MaxH_BV is smaller than a full horizontal search rangefor the coding region, and the constrained previous reconstructed regionis further constrained to include at least MaxH_MV reconstructed samplecolumns in horizontal direction to a left side of the current block andto exclude at least one reconstructed sample column on the left side ofthe current block for the current block with a horizontal distancemeasured with respect to a left edge of the coding region larger thanMaxH_MV. The maximum absolute horizontal BV value can be determined in away similar to that for the maximum absolute vertical BV value. Thehorizontal distance is measured with respect to a left edge of thecoding region

In another invention, if the previous reconstructed samples correspondto Intra-coded video data, the previous reconstructed samples arestored. On the other hand, if the previous reconstructed samplescorrespond to Inter-coded video data, the previous reconstructed samplesare not stored. In yet another embodiment, the encoder sets the maximumabsolute horizontal/vertical BV (block vector) value according to a userinput. The encoder may also set a limit for the maximum absolutehorizontal/vertical BV (block vector) value.

In another embodiment, a maximum memory size of a reconstructed samplememory for storing a constrained previous reconstructed region isdetermined. An IntraBC predictor is derived from a valid previousreconstructed region within the constrained previous reconstructedregion stored in the reconstructed sample memory. The maximum memorysize may correspond to N coding blocks to store N previous reconstructedblocks. The maximum memory size may correspond to a full row of previousreconstructed blocks. Furthermore, the valid previous reconstructedregion within the constrained previous reconstructed region correspondsto the constrained previous reconstructed region overlapped with aladder-shaped previous reconstructed region related to wave-frontparallel processing (WPP). In yet another embodiment, if the previousreconstructed samples correspond to Inter-coded video data, the previousreconstructed samples are not stored. If the previous reconstructedsamples correspond to Intra-coded video data, the previous reconstructedsamples will be stored.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example of Intra motion compensation according tothe Intra-block copy (IntraBC) mode, where a horizontal displacementvector is used to locate an IntraBC predictor in a same picture.

FIG. 2 illustrates an example of reconstructed neighboring blockconfiguration used to derive block vector for IntraBC mode, where thereconstructed neighboring blocks are in a same picture as the currentblock.

FIG. 3 illustrates an example of locating an IntraBC predictor for thecurrent block using a block vector (BV) according to IntraBC coding,where the block vector corresponds to a two-dimensional vector.

FIG. 4 illustrates an example of ladder-shaped neighboring blockconfiguration related to wave-front parallel processing (WPP) forIntraBC mode.

FIG. 5 illustrates an example of neighboring block storage requiredaccording to conventional IntraBC mode at three different timeinstances.

FIG. 6 illustrates an example of neighboring block storage required atthree different time instances according to one embodiment of thepresent invention, where the maximum vertical block vector value isrestricted.

FIG. 7 illustrates an example of neighboring block storage required atthree different time instances according to another embodiment of thepresent invention, where the maximum vertical and horizontal blockvector values restricted.

FIG. 8 illustrates an example of neighboring block storage required atthree different time instances according to yet another embodiment ofthe present invention, where a maximum memory size for storing previousreconstructed samples is specified.

FIG. 9 illustrates an example of neighboring block storage required atthree different time instances according to yet another embodiment ofthe present invention, where not all valid previous reconstructedsamples stored in the memory will be used as reference samples.

FIG. 10 illustrates an exemplary flowchart for an IntraBC coding systemincorporating an embodiment of the present invention to reduce storagerequirement by using a constrained previous reconstructed region.

DETAILED DESCRIPTION OF THE INVENTION

According to screen content coding (SCC) in the current HEVC standard,Intra Block Copy (IntraBC) mode requires large storage space to holddata corresponding to the previous reconstructed region. This largestorage requirement for storing the previous reconstructed samples wouldincrease cost especially for hardware based solutions. Accordingly, thepresent invention discloses methods and apparatus to reduce the requiredstorage associated with the previous reconstructed region for IntraBCcoding.

In a first embodiment of the present invention, the maximum absolutevalue of the vertical block vector for IntraBC coded blocks isrestricted to be less than a full search range. Furthermore, the picturecan be divided into coding regions to allow multiple coding regionsprocessed at the same time. Also, each coding region is smaller than awhole picture and may result in better performance due to localadaptation. Each coding region may correspond to a slice, a tile, apicture area or a whole picture. The image structure for the tile andthe slice has been described in various coding standards such as theHEVC standard. For example, a coding region may correspond to a picturearea consisting of N rows of blocks and each row consists of M blocks.When a current block at a bottom row is coded, the full vertical searchrange can be (N−1)×block height. In the conventional approach, theprevious reconstructed samples for the whole coding region except forthe last coding block have to be stored for processing the last codingblock of the coding region. The first embodiment of the presentinvention will restrict the maximum absolute value of the vertical blockvector, MaxV_MV to be smaller than the full vertical search range, i.e.,(N−1)×block height in this case. For example, MaxV_MV can be smallerthan the full search range by 1. In this case, the required storage forprevious reconstructed samples can save one whole line of reconstructedsamples.

In a preferred embodiment, MaxV_MV can be smaller than the full searchrange by one or more block heights of the coding blocks so that to savestorage requirement corresponding to one or more rows of blocks. Forexample, the maximum absolute value of the vertical block vector (i.e.,MaxV_MV) can be set to be N_(VB)×block height, where N_(VB) is smallerthan (N−1). Accordingly, the system needs only to store N_(VB) rows ofblocks for the previous reconstructed region above the current block andthe current row up to the block before the current block. The storagerequirement according to this embodiment is related to the maximumabsolute value of the block vector (i.e., MaxV_MV) and the region width.Depending on the structure of the region, the region width can be thecorresponding picture width, tile width, slice width CTU (coding treeunit) width or block width. This reduced vertical search range may causesome loss in the coding efficiency. However, an encoder may select aproper vertical search range to reduce the possible loss in the codingefficiency.

FIG. 6 illustrates an example of three instances of IntraBC coding ofthe current block according to an embodiment of the present invention,where N_(VB) is equal to 2 and the coding region consists of 5 rows ofblocks. For time instances t₁, t₂ and t₃ (t₁<t₂<t₃), the previousreconstructed regions (614, 624 and 634) for the current blocks (612,622 and 632) are indicated respectively. After N_(VB) is selected, therequired storage is independent of the height of the image region forIntraBC coding. Accordingly, while N_(VB) rows of reconstructed blocksabove the current block and the reconstructed block in the same row asthe current block are stored in memory, only the valid reconstructedblocks are used to derive IntraBC predictor. As noted in FIG. 6, theconstrained previous reconstructed region (612) at time instance t₁ isthe same as the constrained previous reconstructed region (512) at timeinstance t₁ in FIG. 5. In this case, since the vertical distance for thecurrent block is not exceeding the MaxV_MV, N_(VB) rows of previousreconstructed blocks have to be stored. Therefore, there is nodifference between the constrained previous reconstructed coding regionand the conventional previous reconstructed coding region. However, whenthe vertical distance for the current block exceed the maximum absolutevalue of the vertical block vector (i.e., MaxV_MV), the saving instorage requirement starts to occur as evidenced by comparing betweenarea 624 in FIG. 6 and area 524 in FIG. 5. More saving in storagerequirement occurs at time instance t₃ as evidenced by comparing betweenarea 634 in FIG. 6 and area 534 in FIG. 5. The vertical distance for thecurrent block in the coding region is defined as the distance betweenthe top boundary of the coding region and the top boundary of thecurrent block.

In one embodiment, the IntraBC predictor is derived from a validprevious reconstructed region within the constrained previousreconstructed region stored in the memory, and the valid previousreconstructed region corresponds to the constrained previousreconstructed region overlapped with a ladder-shaped region related towave-front parallel processing (WPP).

The selection of MaxV_MV is an encoder design issue. For example, anencoder can select MaxV_MV based on the Level or Profile of theunderlying coding system. In most video standards, the Level is a set ofconstraints for a bitstream. A lower level often corresponds to asmaller sample rate of the input video. For example, the lowest level(i.e., Level 1) in HEVC corresponds to a maximum luma sample rate of552,960 samples per second and the highest level (i.e., level 6.2)corresponds to a maximum luma sample rate of 4,278,190,080 samples persecond. On the other hand, the Profile is associated with a set ofavailable coding tools and the constraint on maximum allowed bitrate.For example, HEVC defines various Main profiles (e.g., Main 10, Main 12,etc.) The MaxV_MV can also be select based on encoder configurations.

When the Level is taken into account for MaxV_MV selection, a largerMaxV_MV can be selected for a higher level. In HEVC, a higher leveloften implies a higher spatial resolution. Therefore, in order to offera similar effective search range, a larger MaxV_MV is selected for ahigher level. Table 1 illustrates an example of MaxV_MV selectionaccording to the Level.

TABLE 1 Max Vertical Vector, MaxV_MV Level (Integer pixel) 1 36 2 72 2.190 3 135 3.1 180 4 180 4.1 180 5 360 5.1 360 5.2 360 6 540 6.1 540 6.2540

The example shown in Table 1 is intended for illustration purpose. Askilled person may use different values of MaxV_MV for various Levels topractice the present invention without departing from the spirit if thepresent invention.

When the Profile is taken into account for MaxV_MV selection, a largerMaxV_MV can be selected for a higher Profile. Table 2 illustrates anexample of MaxV_MV selection according to the Profile.

TABLE 2 Max Vertical Vector, MaxV_MV Profile (Integer pixel) Main 36Main 10 72 Main 12 64 Main 4:2:2 10 96 Main 4:2:2 12 96 Main 4:4:4 160Main 4:4:4 10 160 Main 4:4:4 12 192 Main 4:4:4 16 Intra 255

The example shown in Table 2 is intended for illustration purpose. Askilled person may use different values of MaxV_MV for various profilesto practice the present invention without departing from the spirit ifthe present invention.

When the encoder configuration is taken into account for MaxV_MVselection, the selection may reflect the specific design concern. Forexample, when the encoder is configured for low power mode, it isdesirable to select a smaller MaxV_MV since a smaller MaxV_MV implies asmaller vertical search range. The smaller vertical search rangerequires fewer searches to identify the optimal reference block.Therefore, the smaller vertical search range will lead to less powerconsumed, which is consistent with the intended low power mode. On theother hand, when a high power mode is used, a larger MaxV_MV can be usedto take advantage of the high power available for accommodating thehigher power associated with larger MaxV_MV. In another example, if ahigh quality mode is selected, a larger MaxV_MV than that for the highpower configuration may be desired since a larger MaxV_MV may lead tobetter performance, i.e., higher quality.

In the second embodiment of the present invention, a maximum absolutevalue of the vertical block vector (MaxV_MV) and a maximum absolutevalue of the horizontal block vector (MaxH_MV) are selected. Similar tothe first embodiment, only MaxV_MV rows of blocks for the previousreconstructed region and the current row up to the block before thecurrent block need to be stored. However, the horizontal search rangewill be restricted to MaxH_MV. Furthermore, some previous reconstructedsamples in some oldest previous reconstructed row of blocks may besaved.

FIG. 7 illustrates an example of three instances of IntraBC coding ofthe current block according to an embodiment of the present invention,where MaxV_MV is equal to (N_(VB)×block height) and N_(VB) is equal to2, MaxH_MV is equal to (N_(HB)×block width) and N_(HB) is equal to 3 andthe coding region consists of 5 rows of blocks. For time instances t₁,t₂ and t₃ (t₁<t₂<t₃), the constrained previous reconstructed regions(714, 724 and 734) for the current blocks (712, 722 and 732) areindicated respectively. After N_(VB) is selected, the required storageis independent of the height of the image region for IntraBC coding.While FIG. 7 illustrates an example of required storage of previousreconstructed region according to the second embodiment, the samestorage as the first embodiment can be used as well. In this case, theadditional saving in storage is given up for simpler memory management.

When the maximum absolute value of the horizontal block vector (i.e.,MaxH_MV) is selected, the horizontal search range will be reduced whichwill lead to few searches required to identify the best candidate forthe reference block. In FIG. 7, the bold lines (716, 726 and 736)indicate the maximum horizontal range that the IntraBC has to search.This reduced horizontal search range may cause loss of the codingefficiency. However, an encoder may select a proper horizontal searchrange to reduce the possible loss of coding efficiency. Compared to FIG.6, some additional saving in storage can be achieved. The constrainedprevious reconstructed region is the same as the conventional previousreconstructed region when the vertical distance of the current block inthe coding region is the same or smaller than MaxV_MV and the horizontaldistance of the current block in the coding region is the same orsmaller than MaxH_MV. The horizontal distance for the current block inthe coding region is defined as the distance between the left boundaryof the coding region and the left boundary of the current block.

Similar to the first embodiment, the selection of MaxV_MV and MaxH_MV isan encoder design issue. For example, an encoder can select MaxV_MV andMaxH_MV based on the Level or Profile of the underlying coding system.Furthermore, the example of MaxV_MV selection according to the Level asshown in Table 1 and the example of MaxV_MV selection according to theProfile as shown in Table 2 can also be applied to the secondembodiment. The MaxH_MV selection according to the Level and the Profilecan be performed similar to the selection for MaxV_MV.

Table 3 illustrates an example of MaxH_MV selection according to theLevel.

TABLE 3 Max Horizontal Vector, MaxH_MV Level (Integer pixel) 1 44 2 882.1 160 3 240 3.1 320 4 320 4.1 320 5 512 5.1 512 5.2 512 6 540 6.1 5406.2 540

The example shown in Table 3 is intended for illustration purpose. Askilled person may use different values of MaxH_MV for various levels topractice the present invention without departing from the spirit if thepresent invention.

Table 4 illustrates an example of MaxH_MV selection according to theProfile.

TABLE 4 Max Horizontal Vector, MaxH_MV Profile (Integer pixel) Main 48Main 10 96 Main 12 64 Main 4:2:2 10 128 Main 4:2:2 12 128 Main 4:4:4 192Main 4:4:4 10 192 Main 4:4:4 12 255 Main 4:4:4 16 Intra 360

The example shown in Table 4 is intended for illustration purpose. Askilled person may use different values of MaxH_MV for various profilesto practice the present invention without departing from the spirit ifthe present invention.

When the encoder configuration is taken into account for MaxV_MV andMaxH_MV selection, the selection may reflect the specific designconcern. The consideration for MaxV_MV in the first embodiment is alsoapplicable to MaxH_MV. For example, when the encoder is configured forlow power mode, it is desirable to select a smaller MaxH_MV since asmaller MaxH_MV implies a smaller vertical search range. The smallervertical search range requires fewer searches to identify the optimalreference block. Therefore, the smaller vertical search range will leadto less power consumed, which is consistent with the intended low powermode. On the other hand, when a high power mode is used, a largerMaxH_MV can be used to take advantage of the high power available foraccommodating the higher power associated with larger MaxH_MV. Inanother example, if a high quality mode is selected, a larger MaxH_MVthan that for the high power configuration may be desired since a largerMaxH_MV may lead to better performance, i.e., higher quality.

In yet another embodiment, the encoder sets the maximum absolutehorizontal/vertical BV (block vector) value according to a user input.For example, the encoder system may provide two registers MaxV_MV andMaxH_MV representing the absolute horizontal/vertical BV (block vector)values for the user to enter the desired values. The encoder may alsoset a limit for the maximum absolute horizontal/vertical BV (blockvector) value. In this case, the encoder will only search for the blockvector value up to the maximum vertical BV value in the verticaldirection and up to the maximum horizontal BV value in the horizontaldirection.

In the third embodiment, a maximum size of the memory storing theprevious reconstructed pixels is selected. The maximum size of thememory storing the previous reconstructed pixels will intrinsicallyrestrict the maximum absolute value of the vertical block vector and/orthe maximum absolute value of the horizontal block vector. For example,a coding region consists of N rows of blocks and each row consists of Mblocks. The maximum size of the memory storing the previousreconstructed pixels is set to M as shown in FIG. 8 for three timeinstances. For instances t₁, t₂ and t₃ (t₁<t₂<t₃), the previousreconstructed regions (814, 824 and 834) for the current blocks (812,822 and 832) are indicated respectively. Furthermore, the regions ofblocks (816, 826 and 836) stored in the memory are indicated in FIG. 8.Since the memory only holds one full row worth of blocks, the maximumvalue of the vertical block vector is no more than one block height. Themaximum value of the horizontal block vector depends on the location ofthe current block. According to the example in FIG. 8, the maximum valueof the horizontal block vector pointing to the left direction is((M−1)×block width), which occurs for the last block of the region. Themaximum value of the horizontal block vector pointing to the rightdirection is 1 block width in the example of FIG. 8.

FIG. 9 illustrates an example of neighboring block storage required atthree different time instances according to yet another embodiment ofthe present invention, where not all valid previous reconstructedsamples stored in the memory will be used as reference samples. Theexample illustrates a case where a memory is used to store up to threeblock rows of reconstructed samples to support vertical predictiondistance up to two block height. At time instance one (i.e., t=t₁), thestored reconstructed samples are indicated by a thick-lined area (910).While the memory stores reconstructed samples through the end of the twoabove rows, the encoder only consider some of the reconstructed samplesin the memory as “valid samples”. For example, to comply with the WPPcoding structure, only the dot-filled blocks are valid reconstructedsamples as indicated by thick-lined area (910) shown in FIG. 9. At timeinstance one (i.e., t=t₂), the entire stored reconstructed samples areconsidered valid samples as indicated by thick-lined area (920) shown inFIG. 9. At time instance one (i.e., t=t₃), only a few blocks areconsidered valid samples as indicated by thick-lined area (930) shown inFIG. 9.

In the existing HEVC standard, a constrained Intra prediction mode asindicated by a flag can be used for an Intra coded block. In theconstrained Intra prediction mode, only previous reconstructed pixelscorresponding to Intra coded data can be used as prediction data for thecurrent block coded using the Intra mode. If the previous reconstructedpixels corresponding to Inter coded data, the prediction data will beviewed as unavailable for the current block coded in the Intra mode. TheIntraBC mode is also in Intra mode category. Accordingly, in the fourthembodiment, constrained Intra prediction is applied to an IntraBC codedblock. Only previous reconstructed pixels corresponding to Intra codeddata will be used as prediction data for the current block coded usingthe IntraBC mode. If the previous reconstructed pixels corresponding toInter coded data, the prediction data will be viewed as unavailable forthe current block coded in the IntraBC mode.

FIG. 10 illustrates an exemplary flowchart for an IntraBC coding systemincorporating an embodiment of the present invention to reduce storagerequirement by using a constrained previous reconstructed region. Thesystem receives input data associated with a current block in the codingregion as shown in step 1010. For encoding, the input data correspondsto pixel data to be encoded. For decoding, the input data corresponds tocoded pixel data to be decoded. The input data may be retrieved frommemory (e.g., computer memory, buffer (RAM or DRAM) or other media) orfrom a processor. A maximum absolute vertical BV (block vector) value,MaxV_BV is determined in step 1020, where MaxV_BV is smaller than a fullvertical search range for the coding region. A constrained previousreconstructed region corresponding to previous reconstructed samplesprocessed before the current block is determined in step 1030, where theconstrained previous reconstructed region includes at least MaxV_MVreconstructed samples in vertical direction above the current block andexcludes at least one row of reconstructed samples for the current blockwith a vertical distance larger than MaxV_MV, wherein the verticaldistance is measured with respect to a top edge of the coding region. AnIntraBC predictor is derived from the constrained previous reconstructedregion in step 1040. IntraBC encoding or decoding is applied to thecurrent block using the IntraBC predictor derived in step 1050.

The flowchart shown above is intended to illustrate examples of IntraBCcoding according to the present invention. A person skilled in the artmay modify each step, re-arranges the steps, split a step, or combinesteps to practice the present invention without departing from thespirit of the present invention. In the disclosure, specific syntax andsemantics have been used to illustrate examples to implement embodimentsof the present invention. A skilled person may practice the presentinvention by substituting the syntax and semantics with equivalentsyntax and semantics without departing from the spirit of the presentinvention.

The above description is presented to enable a person of ordinary skillin the art to practice the present invention as provided in the contextof a particular application and its requirement. Various modificationsto the described embodiments will be apparent to those with skill in theart, and the general principles defined herein may be applied to otherembodiments. Therefore, the present invention is not intended to belimited to the particular embodiments shown and described, but is to beaccorded the widest scope consistent with the principles and novelfeatures herein disclosed. In the above detailed description, variousspecific details are illustrated in order to provide a thoroughunderstanding of the present invention. Nevertheless, it will beunderstood by those skilled in the art that the present invention may bepracticed.

Embodiment of the present invention as described above may beimplemented in various hardware, software codes, or a combination ofboth. For example, an embodiment of the present invention can be one ormore electronic circuits integrated into a video compression chip orprogram code integrated into video compression software to perform theprocessing described herein. An embodiment of the present invention mayalso be program code to be executed on a Digital Signal Processor (DSP)to perform the processing described herein. The invention may alsoinvolve a number of functions to be performed by a computer processor, adigital signal processor, a microprocessor, or field programmable gatearray (FPGA). These processors can be configured to perform particulartasks according to the invention, by executing machine-readable softwarecode or firmware code that defines the particular methods embodied bythe invention. The software code or firmware code may be developed indifferent programming languages and different formats or styles. Thesoftware code may also be compiled for different target platforms.However, different code formats, styles and languages of software codesand other means of configuring code to perform the tasks in accordancewith the invention will not depart from the spirit and scope of theinvention.

The invention may be embodied in other specific forms without departingfrom its spirit or essential characteristics. The described examples areto be considered in all respects only as illustrative and notrestrictive. The scope of the invention is therefore, indicated by theappended claims rather than by the foregoing description. All changeswhich come within the meaning and range of equivalency of the claims areto be embraced within their scope.

1. A method of SCC (screen content coding) or video coding using anIntraBC mode (Intra-block copy mode) for a coding region, wherein thecoding region is divided into multiple coding blocks, the methodcomprising: receiving input data associated with a current block in thecoding region; determining a maximum memory size of a reconstructedsample memory for storing a constrained previous reconstructed region,wherein the constrained previous reconstructed region comprises a groupof previous reconstructed samples processed before the current block;deriving an IntraBC predictor from a valid previous reconstructed regionwithin the constrained previous reconstructed region stored in thereconstructed sample memory; and applying IntraBC encoding or decodingto the current block using the IntraBC predictor derived.
 2. The methodof claim 1, wherein the maximum memory size corresponds to N codingblocks to store N previous reconstructed blocks, where N is a positiveinteger.
 3. The method of claim 1, wherein the maximum memory sizecorresponds to a full row of previous reconstructed blocks.
 4. Themethod of claim 1, wherein the valid previous reconstructed regionwithin the constrained previous reconstructed region corresponds to theconstrained previous reconstructed region overlapped with aladder-shaped previous reconstructed region related to wave-frontparallel processing (WPP).
 5. The method of claim 1, wherein if theprevious reconstructed samples correspond to Inter-coded video data, theprevious reconstructed samples are not stored.
 6. The method of claim 1,wherein if the previous reconstructed samples correspond to Intra-codedvideo data, the previous reconstructed samples are stored.
 7. Anapparatus for SCC (screen content coding) or video coding using anIntraBC mode (Intra-block copy mode) for a coding region, wherein thecoding region is divided into multiple coding blocks, the apparatuscomprising one or more electronic circuits configured to: receive inputdata associated with a current block in the coding region; determine amaximum memory size of a reconstructed sample memory for storing aconstrained previous reconstructed region, wherein the constrainedprevious reconstructed region comprises a group of previousreconstructed samples processed before the current block; derive anIntraBC predictor from a valid previous reconstructed region within theconstrained previous reconstructed region stored in the reconstructedsample memory; and apply IntraBC encoding or decoding to the currentblock using the IntraBC predictor derived.